Packet deconstruction/reconstruction and link-control

ABSTRACT

The present disclosure includes methods, devices, and systems for packet processing. One method embodiment for packet flow control includes deconstructing a transport layer packet into a number of link-control layer packets, wherein each of the link-control layer packets has an associated sequence number, communicating the number of link-control layer packets via a common physical connection for a plurality of peripheral devices, and limiting a number of outstanding link-control layer packets during the communication.

PRIORITY APPLICATION INFORMATION

This application is a Continuation of U.S. application Ser. No.12/538,607, filed Aug. 10, 2009, the entire contents of which areincorporated herein by reference.

TECHNICAL FIELD

The present disclosure relates generally to packet processing inelectronic devices, systems, and methods, and more particularly, topacket deconstruction/reconstruction and link-control.

BACKGROUND

Memory devices are typically provided as internal, semiconductor,integrated circuits and/or external removable devices in computers,personal digital assistants (PDAs), digital cameras, and cellulartelephones, among various other electronic devices. There are manydifferent types of memory including random-access memory (RAM), readonly memory (ROM), dynamic random access memory (DRAM), synchronousdynamic random access memory (SDRAM), phase change random access memory(PCRAM), and flash memory, among others.

A system can include a host, host system memory, and a number ofperipheral devices such as memory devices. The host can have controlcircuitry including one or more of a number of processors, a hostcontroller, host controller memory that is located on the hostcontroller, and a number of internal memory devices. The host cancommunicate with peripheral devices to perform operations on theperipheral devices, such as receiving data from the devices to the hostsystem or transferring data from the host system to the peripheraldevices. The commands that control the receiving and/or transferring ofdata can be issued by the host system.

Data may be communicated, e.g., transferred and/or received, between ahost and one or more peripheral devices using a flow of packets. Suchpackets may be generated by a transport layer protocol, e.g., acommunication/transport layer protocol, which both the host and the oneor more peripheral devices understand. Generation of such transportlayer packets can be independent of the method of communication of thepackets. Where the host and a particular peripheral device are directlyconnected, data flow packets generated by the transport layer protocolcan be communicated between the host and the particular peripheraldevice directly. However, where more than one peripheral device isconnected to the host via a common physical connection, a link-controllayer may be utilized to provide flow control for concurrent datacommunication between the host and the peripheral devices.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a block diagram of a computing system in accordancewith one or more embodiments of the present disclosure.

FIG. 2 illustrates a block diagram of a computing system in accordancewith one or more embodiments of the present disclosure.

FIG. 3A illustrates a block diagram of a layered architecture for aninterface in accordance with one or more embodiments of the presentdisclosure.

FIG. 3B illustrates a block diagram of a number of packets in a layeredarchitecture in accordance with one or more embodiments of the presentdisclosure.

DETAILED DESCRIPTION

The present disclosure includes methods, devices, and systems for packetprocessing. One method embodiment for packet processing includesdeconstructing a transport layer packet into a number of link-controllayer packets, wherein each of the link-control layer packets has anassociated sequence number, communicating the number of link-controllayer packets via a common physical connection for a plurality ofperipheral devices, and limiting a number of outstanding link-controllayer packets during the communication.

In the following detailed description of the present disclosure,reference is made to the accompanying drawings that form a part hereof,and in which is shown by way of illustration how one or more embodimentsof the disclosure may be practiced. These embodiments are described insufficient detail to enable those of ordinary skill in the art topractice the embodiments of this disclosure, and it is to be understoodthat other embodiments may be utilized and that process, electrical,and/or structural changes may be made without departing from the scopeof the present disclosure. As used herein, the designator “N,”particularly with respect to reference numerals in the drawings,indicates that a number of the particular feature so designated can beincluded with one or more embodiments of the present disclosure. Thedesignators can represent the same or different numbers of theparticular features.

The figures herein follow a numbering convention in which the firstdigit or digits correspond to the drawing figure number and theremaining digits identify an element or component in the drawing.Similar elements or components between different figures may beidentified by the use of similar digits. For example, 110 may referenceelement “10” in FIG. 1, and a similar element may be referenced as 210in FIG. 2. As will be appreciated, elements shown in the variousembodiments herein can be added, exchanged, and/or eliminated so as toprovide a number of additional embodiments of the present disclosure. Inaddition, as will be appreciated, the proportion and the relative scaleof the elements provided in the figures are intended to illustrate theembodiments of the present disclosure, and should not be taken in alimiting sense.

FIG. 1 illustrates a block diagram of a system 100 in accordance withone or more embodiments of the present disclosure. In FIG. 1, a host 110is shown. In one or more embodiments, the host can be a computingdevice, such as a personal computer, among other computing device types.Examples of a host 110 include laptop computers, personal computers,mobile phone, digital cameras, digital recording and play back devices,PDA's, memory card readers, and interface hubs, among other examples.

The host 110 of FIG. 1 includes host control circuitry 102 among otherhost elements not shown. Host control circuitry 102 can include one ormore of a processor, a host controller, and/or host memory. In one ormore embodiments, the host control circuitry 102 can be used tocommunicate information between the number of peripheral devices 120-1,120-2, . . . , 120-N and another device, such as the host 110. One ofordinary skill in the art will appreciate that “a processor” can intendone or more processors, such as a parallel processing system, a numberof coprocessors, etc.

The host 110 can include a transport layer, e.g., acommunication/transport layer, a link-control layer, and/or a physicallayer, which can be associated with host control circuitry. Host controlcircuitry 102 can be coupled to peripheral devices 120-1, 120-2, . . . ,120-N. In some embodiments, the host control circuitry 102 can managetransport, link, and physical layer activity without processorintervention and manage command retries without processor intervention.As one of ordinary skill in the art will appreciate, a transport layercan be analogous to a transaction layer as termed by various standards.

In one or more embodiments, the host control circuitry 102 can becoupled to a standardized interface. For example, the host controlcircuitry 102 can be coupled to an interface operated according to auniversal flash storage (UFS) standard among other interfaces. Ingeneral, host control circuitry 102 can be coupled to an interface forcommunicating, e.g., passing, control, address, data and other signalsbetween the peripheral devices 120-1, 120-2, . . . , 120-N, the host110, and/or other devices.

In one or more embodiments, the peripheral devices 120-1, 120-2, . . . ,120-N can include peripheral device control circuitry 104-1, 104-2, . .. , 104-N that can be used to facilitate operations, such as read,write, and/or erase commands for memory devices, among other operations,that are communicated to the peripheral devices 120-1, 120-2, . . . ,120-N from the host 110. One or more of the peripheral devices cancomprise and/or include an RF transceiver 108 coupled to the controlcircuitry, e.g., control circuitry 104-N. Although only peripheraldevice 120-N is illustrated in FIG. 1 with an RF transceiver 108,embodiments are not so limited as a number of peripheral devices caninclude such a transceiver. The RF transceiver 108 can transmit and/orreceive data to and/or from a wireless device (not illustrated). Forexample, the RF transceiver 108 can receive a transport layer packetfrom a wireless device.

The peripheral devices 120-1, 120-2, . . . , 120-N can share a commonphysical connection 105 to the host 110. The common physical connection105 can include the upstream and/or downstream connection between thehost 110 and the peripheral devices 120-1, 120-2, . . . , 120-N. Forexample, the peripheral devices 120-1, 120-2, . . . , 120-N can becoupled to the host 110 in a chained topology, e.g., chained together.In some embodiments, one or more peripheral devices, e.g., peripheraldevice 120-N, can be removed from the chain. In one or more embodiments,the peripheral device control circuitry 104-1, 104-2, . . . , 104-N canprovide a translation layer between the host 110 and the peripheraldevices 120-1, 120-2, . . . , 120-N. Thus, peripheral device controlcircuitry could selectively couple an I/O connector (not shown inFIG. 1) of a peripheral device to receive the appropriate signal at theappropriate I/O connection at the appropriate time. Similarly, thecommunication protocol between a host 110 and the peripheral devices120-1, 120-2, . . . , 120-N may be different than what is required foraccess to the peripheral devices 120-1, 120-2, . . . , 120-N. Theperipheral device control circuitry 104-1, 104-2, . . . , 104-N couldthen translate the command sequence received from a host 110 intoappropriate command sequences to achieve the desired access toperipheral devices 120-1, 120-2, . . . , 120-N. Each translation mayfurther include changes in signal voltage levels in addition to commandsequences.

As used herein, in one or more embodiments, chained peripheral devices(e.g., 120-1, 120-2, . . . , 120-N) can refer to peripheral devicescommunicatively coupled to a host (e.g., host 110) via a common physicalconnection, such as a shared interface port of a host (e.g., via thesame interface port of host control circuitry 102). A particular hostinterface port can include a data input port and a data output port. Assuch, data can be communicated between the host 110 and the chainedperipheral devices 120-1, 120-2, . . . , 120-N via the same singleinterface port of the host 110. The use of particular ports on a host orperipheral devices is described in more detail with respect to FIG. 2.

The embodiments of FIG. 1 can include additional circuitry that is notillustrated so as not to obscure embodiments of the present disclosure.For example, in one or more embodiments in which the peripheral devices120-1, 120-2, . . . , 120-N are memory devices, the memory devices caninclude address circuitry to latch address signals provided over I/Oconnectors through 110 circuitry. Address signals can be received anddecoded by a row decoder and a column decoder, to access the memorydevices. It will be appreciated by those skilled in the art that thenumber of address input connectors depends on the density andarchitecture of the memory devices. Furthermore, in one or moreembodiments a host and/or peripheral device can include one or morecache lines, e.g., for arranging incoming data prior to processingand/or storing the data, among other operations.

FIG. 2 illustrates a block diagram of a system 200 in accordance withone or more embodiments of the present disclosure. The system 200includes a chain of peripheral devices, e.g., memory devices, accordingto one or more embodiments of the present disclosure. Although memorydevices are used as an example, other types of peripheral devices orcombinations of peripheral devices are also within the scope ofembodiments of the present disclosure. Examples of other peripheraldevices include, but are not limited to, printers, scanners, cameras,wireless communication peripherals such as Bluetooth or WiFi devices,external hard drives, solid state drives, flash drives, etc. Examples ofmemory devices include flash memory, DRAM, SRAM, one or more NANDdevices or a Managed NAND implementation, e.g., a NAND controller andone or more NAND devices, or other peripheral devices for data storage.

In FIG. 2, a host 210 is shown having a data output port 212, a datainput port 214, and a buffer 206. Host 210 can be analogous to host 110illustrated in FIG. 1 and can include control circuitry such as controlcircuitry 102 illustrated in FIG. 1. Coupling peripheral devices to asingle data output port 212 and a single data input port 214 can reducea number of pins that may otherwise be included on a host 210. Suchembodiments can help decrease device cost and help simplify production.In one or more embodiments, single data ports such as the single dataoutput port 212 or the single data input port 214 may each includemultiple data lanes. The term single data port is used to illustrate asingle serial connection to a host for multiple peripheral devices, incontrast to a parallel connection for each peripheral device on a host.

As described herein, the host 210 can be configured to deconstruct atransport layer packet into a number of link-control layer packets andcommunicate the number of link-control layer packets via the data outputport 212. The host can monitor a number of acknowledgements,corresponding to the number of link-control layer packets, received viathe data input port 214. The number of acknowledgements can be used bythe host to limit the number of link-control layer packets communicatedvia the data output port 214 as described herein. The host 210 canreconstruct a transport layer packet from a number of link-control layerpackets received via the data input port 214.

A first peripheral device 220-1 is shown with a second peripheral device220-2 and an Nth peripheral device 220-N coupled in a chainconfiguration. A chained peripheral device configuration as shown inFIG. 2 can allow for point to point signaling. Using the configurationshown, a chain of peripheral devices can be arbitrarily long without theuse of complex addressing circuitry as explained herein. The peripheraldevices 220-1, 220-2, . . . , 220-N illustrated in FIG. 2 can beanalogous to the peripheral devices 120-1, 120-2, . . . , 120-Nillustrated in FIG. 1 and can include control circuitry such as controlcircuitry 104-1, 104-2, . . . , 104-N illustrated in FIG. 1. Eachperipheral device 220-1, 220-2, . . . , 220-N can be associated with oneor more device identifications (DID) and/or logical unit numbers (LUN).For example, a particular peripheral device could have one DID and twoor more LUN.

The peripheral devices 220-1, 220-2, . . . , 220-N are shown with anupstream side 222-1, 222-2, . . . , 222-N and a downstream side 224-1,224-2, . . . , 224-N. The peripheral devices can include an upstreamdata input port 226-1, 226-2, . . . , 226-N, a downstream data outputport 228-1, 228-2, . . . , 228-N, a downstream data input port 230-1,230-2, . . . , 230-N, and an upstream data output port 232-1, 232-2, . .. , 232-N. Each data port for a particular peripheral device can becoupled to control circuitry for the particular peripheral device. Inoperation, data or device commands such as address assignments, requestsfor data, etc. can pass through a given device such as from the upstreamdata input port to the downstream data output port along arrow 234-1,234-2, . . . , 234-N. Data/commands can pass internally within a givenperipheral device such as along arrow 238-1, 238-2, . . . , 238-N fromthe upstream data input port 226-1, 226-2, . . . , 226-N to the upstreamdata output port 232-1, 232-2, . . . , 232-N. Data/commands can passdirectly through a give peripheral device on a return path from thedownstream data input port 230-1, 230-2, . . . , 230-N to the upstreamdata output port 232-1, 232-2, . . . , 232-N as shown by arrow 236-1,236-2, . . . , 236-N. The peripheral devices 220-1, 220-2, . . . , 220-Ncan include a buffer 206-1, 206-2, . . . , 206-N coupled to controlcircuitry of the respective peripheral device. The buffer for eachrespective peripheral device can be coupled to one or more of theupstream and downstream data input and output ports. Although threeperipheral devices are shown in the system 200, the present disclosureis not so limited. Using the configuration shown, a greater or lessernumber of peripheral devices can be included.

As described herein, a peripheral device 220-1, 220-2, . . . , 220-N canbe configured to deconstruct a transport layer packet into a number oflink-control layer packets and communicate, e.g., transfer, the numberof link-control layer packets via one or more of the upstream dataoutput port 232-1, 232-2, . . . , 232-N and the downstream data outputport 228-1, 228-2, . . . , 228-N. A peripheral device 220-1, 220-2, . .. , 220-N can communicate an interrupt link-control layer packet via theupstream data output port 232-1, 232-2, . . . , 232-N, e.g., to the host210. A peripheral device can pass-through a number of link-control layerpackets from an input port to an output port either upstream ordownstream as described herein. A peripheral device 220-1, 220-2, . . ., 220-N, can reconstruct a transport layer packet from a number oflink-control layer packets received via one or more of the upstream datainput port 226-1, 226-2, . . . , 226-N and the downstream data inputport 230-1, 230-2, . . . , 230-N.

Control circuitry for a particular peripheral device, e.g., peripheraldevice 220-N, can be configured to reconstruct a transport layer packetfrom a number of link-control layer packets received via a particulardata input port when the link-control layer packets are associated witha destination address, e.g., a DID or LUN, for the peripheral device220-N. When the received link-control layer packets are associated witha destination address for a different peripheral device, e.g., anaddress associated with peripheral device 220-2, the receivingperipheral device 220-N can pass-through the number of link-controllayer packets in an upstream or downstream direction, e.g., through theappropriate output port, toward the destination address associated withthe number of link-control layer packets. In one or more embodiments,the link-control layer may not be used to route packets.

The host 210 can be configured to maintain packet flow control on thecommon physical connection, e.g., common physical connection 105 in FIG.1, between the host 210 and the plurality of peripheral devices 220-1,220-2, . . . , 220-N. As such, a peripheral 220-1, 220-2, . . . , 220-Ndevice can be configured to communicate an interrupt link-control layerpacket to a host 210, e.g., in an upstream direction to the host 210.The interrupt link-control layer packet can serve to notify the host 210that the peripheral device 220-1, 220-2, . . . , 220-N is ready tocommunicate data via the common physical connection. For example, theinterrupt link-control layer packet can indicate that the peripheraldevice 220-1, 220-2, . . . , 220-N has received data, e.g., one or moretransport layer packets, via an RF transceiver 108. The interruptlink-control layer packet can include a context of the data to becommunicated via the common physical connection.

In one or more embodiments, a peripheral device 220-1, 220-2, . . . ,220-N can be configured to communicate an interrupt link-control layerpacket to the host 210 after a period of delay from an instructionpreviously received from the host 210. The interrupt link-control layerpacket can include an indication of the instruction. The peripheraldevice 220-1, 220-2, . . . , 220-N can be configured to communicate theinterrupt link-control layer packet when data associated with theinstruction is ready to be communicated via the common physicalconnection.

Embodiments shown in FIGS. 1-2 may include hard wired devices or theymay include sockets for assembly or expanding capabilities. One or moreembodiments may include a number of expansion sockets, where there arestill available sockets downstream of the last peripheral device in thechain. In such a configuration, the last peripheral device, e.g.,peripheral device 220-N, can be removed and additional peripheraldevices can be placed in the chain, then the last peripheral device canbe reinserted at the end of the newly lengthened chain. In someembodiments additional peripheral devices can be added to the end of thechain for expansion purposes without removing and reinstalling adedicated last peripheral device in the chain.

FIG. 3A illustrates a block diagram of a layered architecture for aninterface in accordance with one or more embodiments of the presentdisclosure. For example, such a layered architecture can be implementedin a host control circuitry, e.g., host control circuitry 102 in FIG. 1,and/or device control circuitry, e.g., device control circuitry 104-1,104-2, . . . 104-N according to one or more embodiments of the presentdisclosure.

The layered architecture can include a transport layer 356, alink-control layer 354, and a physical layer 352, among other layers.Data flow packets between a host and one or more devices may begenerated by the transport layer, e.g., using a protocol that both thehost and devices understand. Such a protocol can be independent of themethod of transmission of the data flow of packets, e.g., wired,wireless, etc. When a device is attached directly to a host, data flowpackets generated by the transport layer 356 can be communicated betweenthe host and device directly.

When one or more devices are attached to the host via a common physicalconnection, a link-control layer 354 may be put in place to improveutilization of the data flow connection between the host and devicesand/or to provide flow control for concurrent data communication betweenthe host and multiple devices. The link-control layer 354 can beimplemented to monitor and/or modulate data communication between a hostand one or more devices. As described herein, the link-control layer 354can exert finer control of packet size and flow control bydeconstructing and reconstructing the data flow packets generated by thetransport layer 356 between the host and devices.

FIG. 3B illustrates a block diagram of a number of packets in a layeredarchitecture in accordance with one or more embodiments of the presentdisclosure. In one or more embodiments, a data flow from a host to atarget device, or from a device to a host, can be deconstructed intolink-control layer packets and reconstructed into the original dataflow, e.g., transport layer packets.

As illustrated in FIG. 3B, a transport layer packet 372 can include oneor more of a header 374, a payload 376, and an error detection component378-T, such as a cyclic redundancy check (CRC) value, a checksum, or anerror correction code (ECC) parity value. In one or more embodiments,the error detection component 378-T can be part of the payload 376. Theheader 374 may contain the context, e.g., the destination address of thetransport layer packet 372. For example, the header 374 may containinformation relating to a command type, a target device ID (DID), alogical unit number (LUN), status, and/or other attributes. The payload376 of the transport layer packet 372 can include data and/or commands.

The transport layer packet 372 can be deconstructed into a number oflink-control layer packets, e.g., link-control layer packets 380-1,380-2, . . . , 380-N. The transport layer packet 372 can bedeconstructed according to a priority and/or an order associated withthe transport layer packet 372, e.g., with respect to a number of othertransport layer packets. In some embodiments, the transport layer packet372 can be deconstructed into a number of link-control layer packets380-1, 380-2, . . . , 380-N before communication through a commonphysical connection, e.g., from a host to a peripheral device, from aperipheral device to a host, or from a first peripheral device to asecond peripheral device. In one or more embodiments, an entiretransport layer packet 372 can be loaded to a buffer, e.g., a hostbuffer 106 or peripheral device buffer 106-1, 106-2, . . . , 106-N asillustrated in FIG. 1, before the transport layer packet isdeconstructed into link-control layer packets 380-1, 380-2, . . . ,380-N, as described herein. Alternatively, the transport layer packetcan be deconstructed as it enters the link-control layer 354 from thetransport layer 356.

Each link-control layer packet, e.g., link-control layer packet 380-1,can be smaller, e.g., can include fewer bits, than the transport layerpacket, e.g., transport layer packet 372, from which the link-controllayer packet was deconstructed. Deconstructing a transport layer packetaccording to one or more embodiments of the present disclosure canprovide, for example, more efficient communication of data through acommon physical connection.

In one or more embodiments, a link-control layer packet, e.g., eachlink-control layer packet, can have a sequence number, e.g., sequencenumber “1” 382-1 in link-control layer packet 380-1, appended thereto.In some embodiments, each link-control layer packet that isdeconstructed from a transport layer packet can have a sequence numberinserted in an order corresponding to the sequential portion of thetransport layer packet that the link-control layer packet represents,e.g., from 1 to N. As illustrated in FIG. 3B, the last link-controllayer packet 380-N can include sequence number “N” 382-N. Sequencenumbers can help maintain link-control layer packet order and aid inreconstruction of the original transport layer packet.

Sequence numbers can be appended to link-control layer packets in anx-bit field of a header of the link-control layer packets, e.g. a fieldcapable of storing x number of bits. As the total number of sequencenumbers available may be limited by a constraint on the size of thefield to which the sequence numbers are appended, sequence numbers maybe recycled. That is, after 2^(x) sequence numbers have been used, e.g.,after 2^(x) link-control layer packets have had sequence numbersassigned for a particular data flow, sequence numbers may be recycled,e.g., reused. For example, if the sequence numbers are limited to theset including 1, 2, 3, and 4, after all four sequence numbers have beenused once, they may be used again, e.g., both a first and a fifthlink-control layer packet may have the sequence number 1 assignedthereto. Link-control layer packets can be communicated out of sequencewith respect to the sequence numbers appended thereto.

One or more embodiments can include limiting the number of outstandinglink-control layer packets that are communicated via a common physicalconnection for a number of peripheral devices. Limiting the number ofoutstanding link-control layer packets can include limiting the numberof outstanding packets to less than or equal to

$\frac{2^{x}}{2}$

link-control layer packets. That is, for example, control circuitry,e.g., host control circuitry 102 in FIG. 1, can confirm that at leasthalf of the total number of sequence numbers worth of link-control layerpackets have been acknowledged before communicating an additionallink-control layer packet. For example, if 16 sequence numbers areavailable, the control circuitry can be configured to limit theoutstanding number of link-control layer packets to 8.

An outstanding packet can include packets that have not beenacknowledged and/or packets that have received an acknowledgement suchas a retransfer request, e.g., a negative acknowledgement. Accordingly,in one or more embodiments, limiting the number of outstandinglink-control layer packets can include using a bit of the x-bit field asa retransfer request bit. A particular link-control layer packet can berecommunicated when the sending device does not receive anacknowledgement for the particular link-control layer packet, or whenthe sending device receives a negative acknowledgement. Such embodimentscan help to prevent packet errors due to a particular sequence numberbeing recycled before a particular link-control layer packet associatedwith the particular sequence number has been received successfully.

According to one or more embodiments of the present disclosure, thelink-control layer can treat all data in the transport layer packet 372,e.g., the header 374, the payload 376, and the error detection component378-T, as data payload. That is, the entirety of the transport layerpacket 372 can be broken up into smaller portions that fit intolink-control layer packets 380-1, 380-2, . . . , 380-N, irrespective ofa distinction between the header 374 and the payload 376. For example,link-control layer packet 380-1 may include a portion of the header 374of the transport layer packet 372, it may include the entire header 374,or it may include at least a portion of the header 374 and a portion ofthe payload 376.

Although a transport layer packet may be deconstructed into a number oflink-control layer packets, each link-control layer packet can maintainand/or express the direction and/or end of the data transmission, e.g.,upstream or downstream, the data destination, e.g., the target such as aDID or LUN, and the packet sequence number, e.g., packet sequence number380-1. That is, each link-control layer packet can have the samedirection and/or end of data transmission in the link-control layer thatthe transport layer packet would have had in the transport layer. Forexample, the direction and/or end of the data transmission can bemaintained and/or expressed in a header of a link-control layer packetas assigned by control circuitry of the device transferring the data.

One or more embodiments can include deconstructing a transport layerpacket 372 into a number of link-control layer packets 380-1, 380-2, . .. , 380-N such that the number of link-control layer packets 380-1,380-2, . . . , 380-N have a payload 384-1, . . . , 384-N size equivalentto a cache line size of a receiving device. Such embodiments can providefor efficient reception of data and reconstruction of transport layerpackets 372. That is, a cache line of the receiving device can be filledand emptied with each received link-control layer packet payload 384-1,. . . , 384-N, thereby helping to prevent inefficiencies associated withpartially loading the cache line or splitting individual packets acrossmultiple loads of the cache line. Example sizes for a cache lineaccording to the present disclosure can include 32 bytes or 64 bytes,however embodiments are not so limited. After reconstruction, thereceiving device, in some instances, can store the transport layerpacket 372 payload 376 as a sector of data. An example size for a sectorof data can be 512 bytes, however embodiments are not so limited.

Each link-control layer packet 380-1, 380-2, . . . , 380-N may includeits own error detection component 378-L1, . . . , 378-LN. An errordetection component, e.g., CRC 378-L1, for a link-control layer packet,e.g., packet 380-1, can be generated for the link-control layer packetindependent of the error detection component, e.g., CRC 378-T,associated with the transport layer packet 372 from which thelink-control layer packet was deconstructed. As illustrated in FIG. 3B,for link-control layer packet 380-1, the sequence number 382-1 and theerror detection component 378-L1 are generated by the link-controllayer, while the payload 384-1 includes data from the original transportlayer packet 372. The sequence number 382-1 and error detectioncomponent 378-L1 for a particular link-control layer packet 380-1 can beused by the link-control for recommunication, flow control, and thelike. As described herein, the payload 384-1 of a particularlink-control layer packet 380-1 may include data from one or more of theheader 374, payload 376, and/or error detection component 378-T of thecorresponding transport layer packet 372.

A transport layer packet 372 can be reconstructed from a number oflink-control layer packets 380-1, 380-2, . . . , 380-N, e.g., accordingto a sequence number associated with each of the link-control layerpackets 380-1, 380-2, . . . , 380-N. The device receiving the number oflink-control layer packets 380-1, 380-2, . . . , 380-N can be configuredto acknowledge each of the number of link-control layer packets.Alternatively, the device receiving the number of link-control layerpackets 380-1, 380-2, . . . , 380-N can be configured to acknowledge thetransport layer packet 372 once it has been reconstructed.

In one or more embodiments, a device or host can load receivedlink-control layer packets into a buffer in sequential order accordingto the sequence number associated with each packet, e.g., sequencenumber 382-1 associated with link-control layer packet 380-1. Once theentire transport layer packet is reconstructed, the data can becommunicated to its destination according to address informationassociated with the reconstructed packet, e.g., as stored in the header374 of the reconstructed packet.

In one or more embodiments, the payload 384-1 of the first link-controllayer packet 380-1 deconstructed from a transport layer packet 372 canstore the header 374 of the transport layer packet 372. The header 374can include a context that describes destination information for thetransport layer packet 372. The context, e.g., the destinationinformation, can be derived from the header of the transport layerpacket 372 received in association with the initial link-control layerpacket 380-1. The context can be loaded into a buffer of the receivingdevice before transferring the link-control layer packets, e.g., theinitial link-control layer packet 380-1 and/or the subsequentlink-control layer packets 380-2, . . . , 380-N.

The link-control layer of a device receiving the first link-controllayer packet 380-1 deconstructed from the transport layer packet 372 cantransfer the first link-control layer packet 380-1 to its destination.Subsequent link-control layer packets 380-2, . . . , 380-N can betransferred without reconstructing the transport layer packet 372. Insuch embodiments, subsequent link-control layer packets 380-2, . . . ,380-N can be transferred to their destination in the order in which theyare received by the receiving device. The subsequent link-control layerpackets 380-2, . . . , 380-N can be transferred according to the contextin the buffer. In some instances, transferring subsequent link-controllayer packets 380-2, . . . , 380-N in the order in which they arereceived can include transferring subsequent link-control layer packets380-2, . . . , 380-N out of sequence with respect to a sequence numberassociated with each link-control layer packet, e.g., sequence number382-N associated with link-control layer packet 380-N. The destinationdevice, e.g., the device to which the receiving device transfers thelink-control layer packets 380-1, 380-2, . . . , 380-N, can reconstructthe transport layer packet 372.

According to one or more embodiments, the receiving device canreconstruct and transfer the transport layer packet 372 to a destinationdescribed in a context of the transport layer packet 372, e.g., to thedestination device. For example, a host can generally be a receivingdevice for a transport layer packet 372 reconstructed from a number oflink-control layer packets 380-1, 380-2, . . . , 380-N received from aperipheral device, however, the transport layer packet 372 can have amore specific destination described in a context associated therewith,e.g., in a transport layer packet header 374. The more specificdestination address can be a memory address associated with the host,among other specific destination addresses. Likewise a peripheraldevice, e.g., peripheral device 220-2 in FIG. 2, can be a receivingdevice that can transfer a reconstructed transport layer packet 372 to adestination described in a context of the transport layer packet 372,where the destination is another peripheral device, e.g., peripheraldevice 220-1 illustrated in FIG. 2. In some instances, the receivingdevice can be the destination device.

Conclusion

The present disclosure includes methods, devices, and systems for packetprocessing. One method embodiment for packet processing includesdeconstructing a transport layer packet into a number of link-controllayer packets, wherein each of the link-control layer packets has anassociated sequence number, communicating the number of link-controllayer packets via a common physical connection for a plurality ofperipheral devices, and limiting a number of outstanding link-controllayer packets during the communication.

It will be understood that when an element is referred to as being “on,”“connected to” or “coupled with” another element, it can be directly on,connected, or coupled with the other element or intervening elements maybe present. In contrast, when an element is referred to as being“directly on,” “directly connected to” or “directly coupled with”another element, there are no intervening elements or layers present. Asused herein, the term “and/or” includes any and all combinations of oneor more of the associated listed items.

As used herein, the term “and/or” includes any and all combinations ofone or more of the associated listed items. As used herein the term“or,” unless otherwise noted, means logically inclusive or. That is, “Aor B” can include (only A), (only B), or (both A and B). In other words,“A or B” can mean “A and/or B” or “one or more of A and B.”

It will be understood that, although the terms first, second, etc. maybe used herein to describe various elements and that these elementsshould not be limited by these terms. These terms are only used todistinguish one element from another element. Thus, a first elementcould be termed a second element without departing from the teachings ofthe present disclosure.

Although specific embodiments have been illustrated and describedherein, those of ordinary skill in the art will appreciate that anarrangement calculated to achieve the same results can be substitutedfor the specific embodiments shown. This disclosure is intended to coveradaptations or variations of one or more embodiments of the presentdisclosure. It is to be understood that the above description has beenmade in an illustrative fashion, and not a restrictive one. Combinationof the above embodiments, and other embodiments not specificallydescribed herein will be apparent to those of skill in the art uponreviewing the above description. The scope of the one or moreembodiments of the present disclosure includes other applications inwhich the above structures and methods are used. Therefore, the scope ofone or more embodiments of the present disclosure should be determinedwith reference to the appended claims, along with the full range ofequivalents to which such claims are entitled.

In the foregoing Detailed Description, some features are groupedtogether in a single embodiment for the purpose of streamlining thedisclosure. This method of disclosure is not to be interpreted asreflecting an intention that the disclosed embodiments of the presentdisclosure have to use more features than are expressly recited in eachclaim. Rather, as the following claims reflect, inventive subject matterlies in less than all features of a single disclosed embodiment. Thus,the following claims are hereby incorporated into the DetailedDescription, with each claim standing on its own as a separateembodiment.

1. A method for processing packets, comprising: deconstructing atransport layer packet into a number of link-control layer packets,wherein each of the link-control layer packets has an associatedsequence number; appending the associated sequence number in an x-bitfield of a header of each of the number of link-control layer packets,wherein x comprises a number of bits in the x-bit field; communicatingthe number of link-control layer packets via a common physicalconnection for a plurality of peripheral memory devices; and limiting anumber of outstanding communicated and negatively acknowledged and/ornot acknowledged link-control layer packets to less than or equal to$\frac{2^{x}}{2}$ link-control layer packets during the communication.2. The method of claim 1, wherein the method includes recommunicating aparticular link-control layer packet when an original transfer of theparticular link-control layer packet is negatively acknowledged or isnot acknowledged.
 3. The method of claim 1, wherein the method includesloading the transport layer packet into a buffer before deconstructingthe transport layer packet into the number of link-control layerpackets.
 4. The method of claim 1, wherein the method includesdeconstructing the transport layer packet into the number oflink-control layer packets as the transport layer packet enters thelink-control layer.
 5. The method of claim 1, wherein the methodincludes communicating the number of link-control layer packets out ofsequence with respect to the respective sequence number associated witheach link-control layer packet.
 6. The method of claim 1, wherein thetransport layer packet includes a header and a payload; and whereindeconstructing the transport layer packet includes deconstructing theheader and the payload into link-control layer packets irrespective of adistinction between the header and the payload.
 7. A method forprocessing packets, comprising: filling and emptying a cache line of amemory device with each of a number of link-control layer packets,wherein a payload of each of the link-control layer packets is of a sizeequivalent to the cache line of the receiving memory device;acknowledging each of the number of link-control layer packets;reconstructing a transport layer packet from the number of link-controllayer packets according to a sequence number associated with each of thenumber of link-control layer packets; and storing a payload of thetransport layer packet in the memory device.
 8. The method of claim 7,wherein reconstructing the transport layer packet includes loading eachof the link-control layer packets into a buffer according to thesequence number associated with each of the number of link-control layerpackets.
 9. The method of claim 7, wherein the method includescommunicating the number of link-control layer packets to a destinationdescribed in a context of the transport layer packet beforereconstructing the transport layer packet.
 10. The method of claim 9,wherein the method includes deriving the context of the transport layerpacket from a header of the transport layer packet received inassociation with an initial link-control layer packet.
 11. The method ofclaim 10, wherein the method includes receiving the entire header of thetransport layer packet in association with the initial link-controllayer packet.
 12. The method of claim 9, wherein the method includes:loading the context into a buffer before communicating the number oflink-control layer packets to the destination; and transferring thenumber of link-control layer packets to the destination according to thecontext in the buffer.
 13. A peripheral device configured for packetdeconstruction and link-control, comprising: an upstream data outputport configured to be coupled via a first common physical serialconnection to a second peripheral device; a downstream data input portconfigured to be coupled via the first common physical serial connectionto a third peripheral device; a downstream data output port configuredto be coupled via a second common physical serial connection to thethird peripheral device; and control circuitry coupled to the upstreamdata output port, the downstream data input port, and the downstreamdata output port, wherein the control circuitry is configured to:communicate an interrupt link-control layer packet via the upstream dataoutput port; deconstruct a first transport layer packet into a firstnumber of link-control layer packets; communicate the first number oflink-control layer packets via the upstream data output port; andpass-through a second number of link-control layer packets from thedownstream data input port to the upstream data output port.
 14. Thedevice of claim 13, wherein: the device includes an upstream data inputport coupled to the control circuitry and configured to be coupled viathe second common physical serial connection to the second peripheraldevice; and the control circuitry is configured to reconstruct a secondtransport layer packet from a third number of link-control layer packetsreceived via the upstream data input port.
 15. The device of claim 14,wherein: the device includes a buffer coupled to the upstream data inputport; and the control circuitry is configured to load the third numberof link-control layer packets in the buffer according to a sequencenumber associated with each of the third number of link-control layerpackets.
 16. The device of claim 13, wherein: the device includes anupstream data input port coupled to the control circuitry and configuredto be coupled via the second common physical serial connection to thesecond peripheral device; the device is associated with a deviceidentification (DID) or a logical unit number (LUN); and the controlcircuitry is configured to reconstruct a second transport layer packetfrom a third number of link-control layer packets received via theupstream data input port when the third number of link-control layerpackets are associated with the DID or LUN.
 17. The device of claim 16,wherein the control circuitry is configured to pass-through the thirdnumber of link-control layer packets from the upstream data input portto the downstream data output port when the third number of link-controllayer packets are not associated with the DID or LUN.
 18. The device ofclaim 13, wherein: the device includes a radio frequency (RF)transceiver coupled to the control circuitry; and the control circuitryis configured to receive the first transport layer packet from the RFtransceiver.
 19. The device of claim 18, wherein the control circuitryis configured to transfer the interrupt link-control layer packet inresponse to the first transport layer packet being received from the RFtransceiver.
 20. The device of claim 19, wherein the interruptlink-control layer packet includes a context of the first transportlayer packet.
 21. The device of claim 13, wherein the control circuitryis configured to: append an associated sequence number in an x-bit fieldof a header of each of the first number of link-control layer packets,wherein x comprises a number of bits in the x-bit field; monitor anumber of acknowledgements corresponding to the number of link-controllayer packets; and use the number of acknowledgements to limit a numberof outstanding communicated and negatively acknowledged and/or notacknowledged link-control layer packets to less than or equal$\frac{2^{x}}{2}$ to link-control layer packets during thecommunication.
 22. A system configured for packet deconstruction andlink-control, comprising: a host including host control circuitry; and aplurality of peripheral devices, peripheral to the host, each includingdevice control circuitry, wherein the plurality of peripheral devicesare coupled to the host via a common physical serial connection; whereinthe host control circuitry and the device control circuitry are eachconfigured to: deconstruct a transport layer packet into a number oflink-control layer packets; and communicate the number of link-controllayer packets via the common physical serial connection; and wherein thehost control circuitry is configured to maintain packet flow control forthe common physical serial connection.
 23. The system of claim 22,wherein the host control circuitry and the device control circuitry areeach configured to reconstruct the transport layer packet from thenumber of link-control layer packets.
 24. The system of claim 22,wherein the host control circuitry is configured to: deconstruct thetransport layer packet into a number of link-control layer packets eachhaving a payload size equivalent to a cache line size of a particularperipheral device; and communicate the number of link-control layerpackets to the particular peripheral device via the common physicalserial connection.
 25. The system of claim 22, wherein the plurality ofperipheral devices are coupled to the host via the common physicalserial connection in a chained topology.
 26. The system of claim 22,wherein the system is configured to operate according to a universalflash storage (UFS) standard.
 27. The system of claim 22, wherein thedevice control circuitry is configured to communicate an interruptlink-control layer packet to the host after a period of delay from aninstruction previously received from the host.
 28. The system of claim27, wherein the interrupt link-control layer packet includes anindication of the instruction.
 29. The system of claim 27, wherein thedevice control circuitry is configured to communicate the interruptlink-control layer packet when data associated with the instruction isready to be communicated.
 30. The system of claim 22, wherein: one ofthe plurality of peripheral devices comprises a radio frequency (RF)transceiver; and device control circuitry of the RF transceiver isconfigured to receive and deconstruct the transport layer packet.